#ifndef DISKJOB_H_
#define DISKJOB_H_

#include "Job.h"
class DiskJob: public Job {

public:
	/***************************************************************************************
	* function name: DiskJob(const DiskJob& jobToCopy)
	* The Input: Job to be copied
	* The output: None
	* The Function operation: Uses Job's copy constructor to create a new backup-to-disk job
	* 					      with attributes identical to given job's
	***************************************************************************************/
	DiskJob(const DiskJob& jobToCopy): Job(jobToCopy) {}

	DiskJob(const Job& jobToCopy): Job(jobToCopy) {}

	/***************************************************************************************
	* function name: DiskJob(const unsigned int startTime, const unsigned int length, const int priority)
	* The Input: Values for new job's attributes
	* The output: None
	* The Function operation: Creates a new backup-to-disk job with given attributes
	***************************************************************************************/
	DiskJob(const unsigned int startTime, const unsigned int length, const int priority);

	/***************************************************************************************
	* function name: ~DiskJob()
	* The Input: None
	* The output: None
	* The Function operation: Destructs backup-to-disk job object
	***************************************************************************************/
	virtual ~DiskJob();

	/***************************************************************************************
	* function name: virtual void work()
	* The Input: None
	* The output: None
	* The Function operation: Performs job's task for a single time unit
	***************************************************************************************/
	virtual void work(const int systemTime, const int type);
};

#endif
